#ifndef MY_SHELL_EXCEPTION
#define MY_SHELL_EXCEPTION

#include "MyShellNamespace.h"

#include <exception>
#include <string>

MY_SHELL_NAMESPACE_BEGIN
// 语法分析异常
class GrammarException : public std::exception 
{
private:
    std::string errorMessage;
public:
    GrammarException(const std::string& message);
public:
    // 重写基类的虚函数what()，返回异常描述信息
    const char* what() const noexcept override;
};

// 脚本执行异常
class ExecutorException : public std::exception
{
private:
    std::string errorMessage;
public:
    ExecutorException(const std::string& message);
public:
    // 重写基类的虚函数what()，返回异常描述信息
    const char* what() const noexcept override;
};
MY_SHELL_NAMESPACE_END

#endif // ! MY_SHELL_EXCEPTION